package gspushmq.model;

import java.util.List;
import java.util.Map;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

/**
 *
 * @description 产品线/权限/终端关系
 * @param
 * @version 1.0
 * @author chengsja
 * @date 2018/12/20 16:16
 *
 */
public enum VersionEnum {
	//这里广告发行版本的枚举类
	ZHITOU_1001(28, 10, 1001, "智投-经典版"),
	ZHITOU_1002(28, 1, 1002, "智投-免费版"),
	ZHITOU_1003(28, 3, 1003, "智投-分析版"),
	ZHITOU_1004(28, 4, 1004, "智投-专业版"),
	ZHITOU_1005(28, 5, 1005, "智投-首席版"),
	ZHITOU_1006(28, 2, 1006, "智投-试用版"),
	TOUGU_1007(901, 3, 1007, "投顾-专业版"),
	TOUGU_1008(901, 8, 1008, "投顾-尊享版"),
	TOUGU_1009(901, 1, 1009, "投顾-免费版"),
//	TOUGU_1010(901, 9, 1010, "投顾-旗舰版"),
	TOUGU_1010(901, 2, 1016, "投顾-试用版"),
	ZHONGDUAN_1011(4, 1, 1011, "终端3.0-免费版"),
	ZHONGDUAN_1012(4, 2, 1012, "终端3.0-试用版"),
	ZHONGDUAN_1013(4, 3, 1013, "终端3.0-付费基础版"),
	ZHONGDUAN_1014(4, 4, 1014, "终端3.0-付费专业版"),
	ZHONGDUAN_1015(4, 999999999, 1015, "终端3.0-内部版");
	//产品线
	private Integer product_line;
	//用户类型
	private Integer user_type;
	//产品编号
	private Integer number;
	//产品名称
	private String version_name;
	
	private VersionEnum(Integer product_line, Integer user_type, Integer number, String version_name) {
		this.product_line = product_line;
		this.number = number;
		this.user_type = user_type;
		this.version_name = version_name;
	}
	/**
	 * 
	 * 方法描述 通过产品编号获取产品名称
	 *
	 * @param number 产品编号 
	 * 1001, "智投-经典版"
	 * 1002, "智投-免费版"
	 * 1003, "智投-分析版"
	 * 1004, "智投-专业版"
	 * 1005, "智投-首席版"
	 * 1006, "智投-试用版"
	 * 1007, "投顾-专业版"
	 * 1008, "投顾-尊享版"
	 * 1009, "投顾-免费版"
	 * 1010, "投顾-旗舰版"
	 * 1011, "终端3.0-免费版"
	 * 1012, "终端3.0-试用版"
	 * 1013, "终端3.0-付费基础版"
	 * 1014, "终端3.0-付费专业版"
	 * 1015, "终端3.0-内部版"
	 * @return
	 * 
	 * @author yaomy
	 * @date 2018年11月23日 下午5:52:32
	 */
	public static String getVersionNameByNumber(Integer number) {
		String versionName = null;
		VersionEnum[] enums = VersionEnum.values();
		for(VersionEnum venum : enums) {
			System.out.println(venum);
			if(venum.number.equals(number)) {
				versionName = venum.version_name;
				break;
			}
		}
		return versionName;
	}
	/**
	 * 
	 * 方法描述 通过产品编号获取用户类型
	 *
	 * @param number 产品编号
	 * @return
	 * 
	 * @author yaomy
	 * @date 2018年11月23日 下午5:56:26
	 */
	public static Integer getUserTypeByNumber(Integer number) {
		Integer userType = null;
		VersionEnum[] enums = VersionEnum.values();
		for(VersionEnum venum : enums) {
			System.out.println(venum);
			if(venum.number.equals(number)) {
				userType = venum.user_type;
				break;
			}
		}
		return userType;
	}
	/**
	 * 
	 * 方法描述 通过产品线获取 产品编号
	 *
	 * @param product_line
	 * @return
	 * 
	 * @author yaomy
	 * @date 2018年11月23日 下午6:04:54
	 */
	public static Integer getNumber(Integer product_line, Integer user_type) {
		if(product_line == null || user_type == null) {
			return null;
		}
		
		Integer number = null;
		VersionEnum[] enums = VersionEnum.values();
		for(VersionEnum venum : enums) {
			if(venum.product_line.equals(product_line) && venum.user_type.equals(user_type)) {
				number = venum.number;
			}
		}
		return number;
	}
	/**
	 * 
	 * 方法描述 通过产品线获取 【编号==》版本名称】
	 *
	 * @param product_line
	 * @return
	 * 
	 * @author yaomy
	 * @date 2018年11月23日 下午6:04:54
	 */
	public static List<Map<String, Object>> getVersionList(Integer product_line) {
		List<Map<String, Object>> list = Lists.newArrayList();
		VersionEnum[] enums = VersionEnum.values();
		for(VersionEnum venum : enums) {
			Map<String, Object> map = Maps.newLinkedHashMap();
			if(product_line == null) {
				map.put("version_code", venum.number);
				map.put("version_name", venum.version_name);
			} else {
				if(venum.product_line.equals(product_line)) {
					map.put("version_code", venum.number);
					map.put("version_name", venum.version_name);
				}  
			}
			if(!map.isEmpty()) {
				list.add(map);
			}
		}
		return list;
	}
}